/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package idea.de.explorer;


import idea.model.qnrlibrary.CustomResponseDeView;
import java.beans.IntrospectionException;
import java.util.List;
import org.openide.nodes.BeanNode;
import org.openide.nodes.ChildFactory;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.openide.util.Exceptions;
import org.openide.util.lookup.Lookups;


/**
 *
 * @author rejun001
 */
public class IDataElemsChildFactory extends ChildFactory<CustomResponseDeView>
{

    private List<CustomResponseDeView> resultList;


    public IDataElemsChildFactory( List<CustomResponseDeView> resultList )
    {
        this.resultList = resultList;
    }


    @Override
    protected boolean createKeys( List<CustomResponseDeView> list )
    {
        for ( CustomResponseDeView crde : resultList )
        {
            list.add( crde );
        }
        return true;
    }


    @Override
    protected Node createNodeForKey( CustomResponseDeView key )
    {
        IDataElemsNode node = null;
        try
        {
            node = new IDataElemsNode( key );
        }
        catch ( Exception e )
        {
            Exceptions.printStackTrace( e );
        }

        return node;
    }

    private class IDataElemsNode extends BeanNode {
        
        public IDataElemsNode( CustomResponseDeView bean)  throws IntrospectionException {
            super( bean, Children.LEAF, Lookups.singleton( bean ) );
            //setDisplayName(bean.getDeName());
            setDisplayName(bean.getOccurrenceSequence().toString());
            setShortDescription(bean.getDeName() + "<br\\>" + bean.getPaperAgName() + " " + bean.getDcAgName());
        }           
    }  

//    public class IDataElemsNode extends AbstractNode
//    {
//
//        private IDataElemsNode( CustomResponseDeView bean )
//        {
//            super( Children.LEAF , Lookups.singleton( bean ) );
//            //setDisplayName(bean.getDeName());
//            setDisplayName( bean.getOccurrenceSequence().toString() );
//            setShortDescription( bean.getDeName() + "<br\\>" + bean.getPaperAgName() + " " + bean.getDcAgName() );
//        }
//
//
//        @Override
//        protected Sheet createSheet()
//        {
//            Sheet sheet = Sheet.createDefault();
//            Sheet.Set set = Sheet.createPropertiesSet();
//            CustomResponseDeView obj = getLookup().lookup( CustomResponseDeView.class );
//            CRProperty crProperty = new CRProperty( obj );
//            set.put( crProperty );
//            sheet.put( set );
//            return sheet;
//        }
//
//    }
//
//
//    public class CRProperty extends PropertySupport.ReadWrite<String>
//    {
//
//        CustomResponseDeView crv;
//
//
//        public CRProperty( CustomResponseDeView crv )
//        {
//            super( "deName" , String.class , "Data Element" , "Data Element Name" );
//            this.crv = crv;
//        }
//
//
//        @Override
//        public String getValue() throws IllegalAccessException , InvocationTargetException
//        {
//            return crv.getDeName();
//        }
//
//
//        public PropertyEditor getpropertyEditor()
//        {
//            return new CRPropertyEditorSupport( crv );
//        }
//
//
//        @Override
//        public void setValue( String newValue ) throws IllegalAccessException , IllegalArgumentException , InvocationTargetException
//        {
//            crv.setDeName( newValue );
//        }
//
//    }
//
//
//    private class CRPropertyEditorSupport extends PropertyEditorSupport implements ExPropertyEditor , InplaceEditor.Factory
//    {
//
//        private final CustomResponseDeView crv;
//
//
//        private CRPropertyEditorSupport( CustomResponseDeView crv )
//        {
//            this.crv = crv;
//        }
//
//
//        @Override
//        public String getAsText()
//        {
//            String s = (String) getValue();
//            if ( s == null )
//            {
//                return "No Data Element Set";
//            }
//            return s;
//        }
//
//
//        @Override
//        public void setAsText( String s )
//        {
//            setValue( s );
//        }
//
//
//        @Override
//        public void attachEnv( PropertyEnv pe )
//        {
//            pe.registerInplaceEditorFactory( this );
//        }
//
//        private InplaceEditor ed = null;
//
//
//        @Override
//        public InplaceEditor getInplaceEditor()
//        {
//            if ( ed == null )
//            {
//                ed = new InPlace( crv );
//            }
//            return ed;
//        }
//
//    }
//
//
//    public class InPlace implements InplaceEditor
//    {
//
//        private final JComboBox comboBox = new JComboBox();
//        private PropertyEditor editor = null;
//        private final CustomResponseDeView crv;
//
//
//        private InPlace( final CustomResponseDeView crv )
//        {
//            this.crv = crv;
//            comboBox.addActionListener( new ActionListener()
//            {
//                public void actionPerformed( ActionEvent e )
//                {
//                    crv.setDeName( comboBox.getModel().getSelectedItem().toString() );
//                }
//
//            } );
//        }
//
//
//        @Override
//        public void connect( PropertyEditor pe , PropertyEnv pe1 )
//        {
//            editor = pe;
//            reset();
//        }
//
//
//        @Override
//        public JComponent getComponent()
//        {
//            return comboBox;
//        }
//
//
//        @Override
//        public void clear()
//        {
//            editor = null;
//            model = null;
//        }
//
//
//        @Override
//        public Object getValue()
//        {
//            comboBox.repaint();
//            comboBox.updateUI();
//            ( (JComponent) comboBox.getParent() ).requestFocus();
////            updateUI();
////            repaint();
//            return comboBox.getSelectedItem();
//        }
//
//
//        @Override
//        public void setValue( Object o )
//        {
//            comboBox.setSelectedItem( o );
//            comboBox.repaint();
//            comboBox.updateUI();
//            ( (CustomResponseDeView) o ).setDeName( comboBox.getSelectedItem().toString() );
//            ( (JComponent) comboBox.getParent() ).requestFocus();
//        }
//
//
//        @Override
//        public boolean supportsTextEntry()
//        {
//            return true;
//        }
//
//
//        @Override
//        public void reset()
//        {
//            comboBox.addItem( "New York" );
//            comboBox.addItem( "New Rochelle" );
//            comboBox.addItem( "New Haven" );
//            comboBox.addItem( "New London" );
//            String str = (String) editor.getValue();
//            if ( str != null )
//            {
//                comboBox.setSelectedItem( str );
//            }
//        }
//
//
//        @Override
//        public void addActionListener( ActionListener al )
//        {
//            //throw new UnsupportedOperationException( "Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
//        }
//
//
//        @Override
//        public void removeActionListener( ActionListener al )
//        {
//            //throw new UnsupportedOperationException( "Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
//        }
//
//
//        @Override
//        public KeyStroke[] getKeyStrokes()
//        {
//            return new KeyStroke[ 0 ];
//        }
//
//
//        @Override
//        public PropertyEditor getPropertyEditor()
//        {
//            return editor;
//        }
//
//
//        @Override
//        public PropertyModel getPropertyModel()
//        {
//            return model;
//        }
//
//        private PropertyModel model;
//
//
//        @Override
//        public void setPropertyModel( PropertyModel pm )
//        {
//            this.model = pm;
//        }
//
//
//        @Override
//        public boolean isKnownComponent( Component cmpnt )
//        {
//            return cmpnt == comboBox || comboBox.isAncestorOf( cmpnt );
//        }
//
//    }

}
